package com.t.bricks.bussiness.service.customer;

import com.t.bricks.bussiness.model.customer.AddEntity;
import com.t.bricks.bussiness.service.common.BaseService;
import com.t.bricks.model.MsgEmity;

/**
 * 顾客信息Customer表基本业务操作类接口定义
 */
public interface CustomerService<T> extends BaseService<T> {

	/**
	 * 新增
	 * @param addEntity 新增顾客对象实体
	 * @return MsgEmity
	 */
	MsgEmity addCustom(AddEntity addEntity);
	
	/**
	 * 修改密码
	 * @param uId
	 * @param sOldPass
	 * @param sNewPass
	 * @return
	 */
	MsgEmity editPass(String uId, String sOldPass, String sNewPass);
	
	/**
	 * 重置密码
	 * @param uId 被修改的用户编号
	 * @param sPass 操作人员的密码
	 * @return
	 */
	MsgEmity resetPass(String uId, String sPass);
	
	/**
	 * 修改手势密码
	 * @param uId
	 * @param sOldPass
	 * @param sNewPass
	 * @return
	 */
	MsgEmity editSignPass(String uId, String sOldPass, String sNewPass);
	
	/**
	 * 重置手势密码
	 * @param uId 被修改的用户编号
	 * @param sPass 操作人员的密码
	 * @return
	 */
	MsgEmity resetSignPass(String uId, String sPass);

	/**
	 * 验证当前账号密码
	 * @param sId 账号
	 * @param sPass 待验证手势密码
	 * @return
	 */
	MsgEmity checkPass(String sId, String sPass);

	/**
	 * 验证当前账号手势密码
	 * @param sId 账号
	 * @param sPass 待验证手势密码
	 * @return
	 */
	MsgEmity checkSignPass(String sId, String sPass);

	/**
	 * 请求发送手机验证码
	 * @param sPhone 手机
	 * @return
	 */
	MsgEmity sendIdentifyingCode(String sPhone);
	
	/**
	 * 忘记密码
	 * @param sNo 识别号(电话)
	 * @param iCode 短信验证码
	 * @param sNewPass 新密码
	 * @return
	 */
	MsgEmity forgetPass(String sNo, Integer iCode, String sNewPass);

	/**
	 * 删除数据
	 * @param id 记录编号
	 * @return MsgEmity
	 */
	MsgEmity del(String id);
	
	/**
	 * 根据手机号(sNo)与关注号进行登录
	 * @param sNo 识别号(电话)
	 * @param sOpenId 关注号
	 * @param iType 类型(1:微信)
	 * @param sOwner 用户来源表
	 * @param iDevice 设备类型,1:PC,2:手机,3:平板,4.....
	 * @return
	 */
	MsgEmity login(String sNo, String sOpenId, Integer iType, String sOwner, Integer iDevice);
	
	/**
	 * 根据手机号(sNo)判断是否与关注号进行绑定
	 * @param sNo 识别号(电话)
	 * @param iType 类型(1:微信)
	 * @return
	 */
	MsgEmity hasOpenId(String sNo, Integer iType);
	
	/**
	 * 绑定关注号
	 * @param uId 记录编号
	 * @param sOpenId 关注号
	 * @param sPass 当前密码
	 * @param iType 类型(1:微信)
	 * @return
	 */
	MsgEmity bindingOpenId(String uId, String sOpenId, String sPass, Integer iType);
	
	/**
	 * 设置微信用户统一标识
	 * @param sWechatUid 微信用户统一标识
	 * @return
	 */
	MsgEmity setWechatid(String sWechatUid);
	
	/**
	 * 根据微信用户统一标识获取电话信息
	 * @param sWechatUid 微信用户统一标识
	 * @return
	 */
	MsgEmity getNoByWechatUid(String sWechatUid);
	
	/**
	 * 判断微信用户唯一标识是否已经绑定
	 * @param sWechatUid 微信用户统一标识
	 * @return 返回手机号
	 */
	MsgEmity hasWechatUid(String sWechatUid);

	/**
	 * 根据微信用户唯一标识进行登录
	 * @param sWechatUid 微信用户统一标识
	 * @param iDevice 设备类型,1:PC,2:手机,3:平板,4.....
	 * @return
	 */
	MsgEmity loginByWechatUid(String sWechatUid, Integer iDevice);
	
}
